home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 002 / bluebery.arc / TESTWRIT.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-29  |  7.9 KB  |  125 lines

  1. 5  CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57
  2. 10  '******************* EDUCATOR'S TOOLBOX SPECIAL ****************************
  3. 16  'KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE
  4. 18  'OPEN         TEACHER'S / EDUCATOR'S TESTWRITER & GRADE SHEET PROGRAM         OPEN
  5. 20  'OPEN                                                                         OPEN
  6. 22  'OPEN     This program was written and developed over a period of several     OPEN
  7. 24  'OPEN years by Bill Alton, 4201 W Carol Avenue. Phoenix, AZ  85021.  It is    OPEN
  8. 26  'OPEN a superbly crafted and implemented program with application far be-     OPEN
  9. 28  'OPEN ond test writing and grading. The program is expanded on the 360K disc. OPEN
  10. 30  'OPEN Big Blueberry Pie purchasers may examine the programming techniques in- OPEN
  11. 31  'OPEN volved.  Please call up the TESTWRIT.DOC program with a "type" command  OPEN
  12. 32  'OPEN in DOS.  Load the SAMPLE.TWD program when running this program for an   OPEN
  13. 33  'OPEN example of the TESTWRITERS capability. Bill Alton will welcome letters  OPEN
  14. 34  'OPEN with comments and applications of this program from educators or other  OPEN
  15. 35  'OPEN users. The program has been modified to work on Drive A. To use the     OPEN
  16. 36  'OPEN program for production, change Drive A references in Lines 1840, 2410,  OPEN
  17. 37  'OPEN and 3200 to Drive B. DO NOT OVERWRITE THE DRIVE A DISK. USE WRITE TAB!  OPEN
  18. 38  'OPEN NOTE:!  If you distribute this program, please leave Bill Alton's name  OPEN
  19. 39  'OPEN in the lead-in REMARKS as shown.                                        OPEN
  20. 40  'OPEN     An expanded version is on the 320K disk as TEST2WRT.BAS             OPEN
  21. 41  'OPEN                       (c) G I N A C O -- 1983       Ver 5.3/320         OPEN
  22. 50  'SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD
  23. 55  '        *****  < F2 > to RUN  *******  < F10 > For BLUEMENU  *****
  24. 57  ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE  line 5 ======
  25. 60  CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT
  26. 100  COLOR 7,0
  27. 110  '***    T E S T W R I T E R    ***
  28. 120  '***      BILL ALTON        ***
  29. 130  '***    VERSION 1.0  05/15/83    ***
  30. 140  '*** FOR EPSON FX-80 PRINTER ***
  31. 160  CLEAR 1000:DIM Q$(100),Q1$(100),Q2$(100),A$(100,4),B$(100,4):UU$="##.":CLS:GOSUB 3230:LOCATE 12,26:PRINT"*** TESTWRITER ***":FOR X=1 TO 500:NEXT X:PG=2:GOTO 2280
  32. 270  ' *** WRITE TEST ***
  33. 280  CLS:LOCATE 8,15:LINE INPUT"SUBJECT ";TT$:IF TT$=""THEN TT$="U. S. HISTORY":CLS
  34. 320  CLS:LOCATE10,1:PRINT"INPUT A REFERENCE CODE (EG. CHAPTER 12 SECTON 1 --> ";:COLOR1:PRINT"C12S1";:COLOR7:PRINT" ) ";:LINEINPUT;S$:N=100:M=1
  35. 420  FORA=MTON
  36. 430  CLS:LOCATE8,15:PRINT"(TYPE 'END' IF LAST QUESTION)":PRINT"***  TYPE OUT QUESTION # ";A;"  ***":PRINTSTRING$(80,196):LOCATE11,10:COLOR0,7:PRINTSPACE$(62):COLOR7,0:LOCATE11,10:LINEINPUTQ$(A):IFQ$(A)="END"THENN=A-1:GOTO2280
  37. 550  LOCATE12,10:COLOR0,7:PRINTSPACE$(62):COLOR7,0:LOCATE12,10:LINEINPUTQ1$(A):IFQ1$(A)=""THENQ1$(A)="XX
  38. 620  IFQ$(A)="X"THENA=(A-1):Q$(A)="  ":CLS:GOTO430
  39. 630  IFQ1$(A)="XX"THENQ2$(A)="XX"ELSELOCATE13,10:COLOR0,7:PRINTSPACE$(62):COLOR7,0:LOCATE13,10:LINEINPUTQ2$(A)
  40. 640  IFQ2$(A)=""THENQ2$(A)="XX
  41. 650  IFQ1$(A)="X"THENPRINT"RETYPING LAST QUESTION ";A:Q1$(A)="  ":CLS:GOTO430
  42. 660  IFQ2$(A)="X"THENQ2$(A)="  ":GOTO430
  43. 670  FORB=1TO4
  44. 680  CLS:PRINT"QUESTION #";A:PRINTSTRING$(80,223):PRINTQ$(A):IFQ1$(A)<>"XX"THENPRINTQ1$(A)
  45. 730  IFQ2$(A)<>"XX"THENPRINTQ2$(A)
  46. 740  PRINTSTRING$(80,177):PRINT"ANSWER # ";B;:IFB=1THENCOLOR17:PRINT"   *** ENTER CORRECT ANSWER *** ":COLOR7,0
  47. 770  PRINT:PRINT"TYPE 'X' TO REDO ANSWERS":LOCATE14,15:COLOR0,7:PRINTSPACE$(12):COLOR7,0:LOCATE14,15:LINEINPUTA$(A,B):IFA$(A,B)="X"THENB=1:CLS:GOTO680
  48. 870  IF B=1 THEN A$(A,1)="*"+A$(A,1)
  49. 880  CLS:NEXTB,A:GOTO2280
  50. 910  ' *** START OF PRINT ROUTINE ***
  51. 920  CLS:X$="":INPUT"HIT ENTER TO PRINT -- 'R' TO RETURN TO MENU";X$:IFX$="R"ORX$="r"THEN2280
  52. 960  PRINT:PRINT:PRINT:INPUT"DO YOU WANT TO RANDOMIZE THE ANSWERS ";X$:IFLEFT$(X$,1)="Y"ORLEFT$(X$,1)="y"THENV=1ELSEV=0
  53. 1010  PRINT:INPUT"INPUT 'CODE' SYMBOL TO SEPERATE TEST VERSIONS (EG. #,*,@)";KK$:CLS:REM *** START PRINTING TO PRINTER ***
  54. 1050  PRINT"PRINTING":LPRINT DATE$;TAB(57)"Name ";STRING$(16,95):LPRINT S$;KK$;:LPRINT TAB(57)"Date/Rm _________ (   )":LPRINT STRING$(79,61):Y=40-(LEN(TT$)/2):LPRINT TAB(Y)TT$:LPRINT STRING$(79,CHR$(42))
  55. 1130  LPRINT SU$;"INSTRUCTIONS:";EU$;SI$;" Choose the best answer and fill in the letter of the answer in":LPRINT TAB(15)"the blank to the left of the question.";EI$:LPRINT" ":LC=8:FOR A=1 TO N:CLS:IF Q$(A)=""THEN 1360
  56. 1200  PRINT"WORKING ON QUESTION ";A;TAB(65)"LINECOUNT = ";LC:LPRINT STRING$(5,95);:LPRINT TAB(7)USING UU$;A;:LPRINT TAB(11)Q$(A):LC=LC+1:IF Q1$(A)<>"XX"THEN LPRINT TAB(11)Q1$(A):LC=LC+1
  57. 1260  IFQ2$(A)<>"XX"THENLPRINTTAB(11)Q2$(A):LC=LC+1
  58. 1270  IFV=1THENGOSUB2510
  59. 1280  CLS:IFLEFT$(A$(A,1),1)="*"THENLPRINTTAB(9);"A) ";RIGHT$(A$(A,1),(LEN(A$(A,1))-1));ELSELPRINTTAB(9)"A) ";A$(A,1);
  60. 1300  IFLEFT$(A$(A,2),1)="*"THENLPRINTTAB(45);"B) ";RIGHT$(A$(A,2),(LEN(A$(A,2))-1))ELSELPRINTTAB(45)"B) ";A$(A,2)
  61. 1310  IFLEFT$(A$(A,3),1)="*"THENLPRINTTAB(9);"C) ";RIGHT$(A$(A,3),(LEN(A$(A,3))-1));ELSELPRINTTAB(9)"C) ";A$(A,3);
  62. 1320  IFLEFT$(A$(A,4),1)="*"THENLPRINTTAB(45);"D) ";RIGHT$(A$(A,4),(LEN(A$(A,4))-1))ELSELPRINTTAB(45)"D) ";A$(A,4)
  63. 1330  LPRINT" ":LC=LC+4:IFLC>62THENGOSUB3100
  64. 1360  NEXTA:LPRINTCHR$(12):CLS:PG=2:PRINT"DO YOU WANT AN ANSWER KEY ":X$=INPUT$(1):IFLEFT$(X$,1)="N"ORLEFT$(X$,1)="n"THEN2280
  65. 1430  CLS:PRINTCHR$(23):PRINT"PRINTING ANSWER KEY":LPRINTDATE$;TAB(45)SEC$"* T E A C H E R'S  C O P Y *";EEC$:LPRINTS$;:IFV=1THENLPRINTKK$;
  66. 1490  LPRINTTAB(50)SEX$;"---> K E Y <---";EEX$:LPRINTSTRING$(79,"*"):Y=40-(LEN(TT$)/2):LPRINTTAB(Y)TT$:LPRINTSTRING$(79,"*"):LPRINT" ":LPRINT" ":LPRINT" ":LC=10:FORA=1TON:IFQ$(A)=""THEN2280
  67. 1600  PRINT"WORKING ON QUESTION ";A:IFLEFT$(A$(A,1),1)="*"THENLPRINTTAB(3);"A <--";:GOTO1660
  68. 1620  IFLEFT$(A$(A,2),1)="*"THENLPRINTTAB(3);"B <--";:GOTO1660
  69. 1630  IFLEFT$(A$(A,3),1)="*"THENLPRINTTAB(3);"C <--";:GOTO1660
  70. 1640  IFLEFT$(A$(A,4),1)="*"THENLPRINTTAB(3);"D <--";:GOTO1660
  71. 1650  LPRINTTAB(3)"- <--";
  72. 1660  LPRINTA;". ";:LPRINTQ$(A):LC=LC+1:IFQ1$(A)<>"XX"THENLPRINTTAB(15)Q1$(A):LC=LC+1
  73. 1700  IFQ2$(A)<>"XX"THENLPRINTTAB(15)Q2$(A):LC=LC+1
  74. 1710  LPRINTTAB(9)"A) ";A$(A,1);TAB(45)"B) ";A$(A,2):LPRINTTAB(9)"C) ";A$(A,3);TAB(45)"D) ";A$(A,4):LPRINT" ":LC=LC+4:IFLC>60THENGOSUB3100
  75. 1760  NEXTA:LPRINT" ":LPRINTTAB(40)"EACH QUESTION IS WORTH ";100/N;" POINTS":LPRINTCHR$(12):GOTO2280
  76. 1810  ' *** INPUT SAVED TEST ***
  77. 1820  CLS:ONERRORGOTO3400
  78. 1840  FILES"A:*.TWD":LINEINPUT"INPUT FILE NAME  (NO .TWD)";DF$:IFDF$=""THEN2280
  79. 1870  DF$=DF$+".TWD":OPEN"I",1, DF$:INPUT#1,N:LINEINPUT#1,TT$:LINEINPUT#1,S$:LOCATE1,10:PRINTTT$,S$:FORA=1TON:INPUT#1,Q$(A),Q1$(A),Q2$(A),A$(A,1),A$(A,2),A$(A,3),A$(A,4):LOCATE24,5:PRINTQ$(A):NEXTA:CLOSE
  80. 2000  INPUT"DO YOU WANT TO ADD ON TO THIS TEST ";X$:IFLEFT$(X$,1)<>"Y"THEN920
  81. 2020  M=N:M=M+1:CLS:PRINT"GET READY TO ADD TO TEST":FORX=1TO300:NEXTX:N=100:GOTO420
  82. 2100  ' *** SAVE PROGRAM ***
  83. 2110  CLS:LINEINPUT"OUTPUT FILE NAME # ";DF$:DF$=DF$+".TWD":OPEN"O",1, DF$:PRINT#1,N:PRINT#1,TT$:PRINT#1,S$:FORA=1TON
  84. 2190  PRINT#1,CHR$(34);Q$(A);CHR$(34);CHR$(34);Q1$(A);CHR$(34);CHR$(34);Q2$(A);CHR$(34);CHR$(34);A$(A,1);CHR$(34);CHR$(34);A$(A,2);CHR$(34);CHR$(34);A$(A,3);CHR$(34);CHR$(34);A$(A,4)CHR$(34):PRINTTT$,Q$(A):NEXTA:CLOSE:CLS:PRINT"THE TEST HAS BEEN SAVED
  85. 2250  FORX=1TO300:NEXTX:REM *** MENU ***
  86. 2280  CLS
  87. 2290  PRINTTAB(60)N" QUESTIONS READY
  88. 2300  PRINTSTRING$(80,205):PRINT:PRINTTAB(23);:COLOR0,7:PRINT" M A K E  A  S E L E C T I O N ":COLOR7,0:PRINT:PRINT:PRINTTAB(25)"1  -  WRITE TEST":PRINTTAB(25)"2  -  INPUT SAVED TEST":PRINTTAB(25)"3  -  SAVE PROGRAM
  89. 2410  PRINTTAB(25)"4  -  PRINT TEST":PRINTTAB(25)"5  -  RECALL TEST QUESTION":PRINTTAB(25)"6  -  READ DIRECTORY ON DISK A
  90. 2440  W$=INKEY$:IFW$=""GOTO2440
  91. 2460  W=VAL(W$):IFW<1ORW>6THEN2440
  92. 2480  ONWGOTO280,1820,2110,920,2780,3200
  93. 2490  '*** RANDOMIZE ANSWERS ROUTINE ***
  94. 2500  X=VAL(RIGHT$(TIME$,2))+VAL(MID$(TIME$,4,2))
  95. 2510  RANDOMIZEX
  96. 2520  X=INT(RND*(5)):IFX=0THEN2520
  97. 2540  N(1)=X
  98. 2550  X=INT(RND*(5)):IFX=0THEN2550
  99. 2570  N(2)=X:IFN(2)=N(1)THEN2550
  100. 2590  X=INT(RND*(5)):IFX=0THEN2590
  101. 2610  N(3)=X:IFN(3)=N(2)ORN(3)=N(1)THEN2590
  102. 2630  X=INT(RND*(5)):IFX=0THEN2630
  103. 2650  N(4)=X:IFN(4)=N(3)ORN(4)=N(2)ORN(4)=N(1)THEN2630
  104. 2670  PRINTN(1),N(2),N(3),N(4):B$(A,N(1))=A$(A,1):B$(A,N(2))=A$(A,2):B$(A,N(3))=A$(A,3):B$(A,N(4))=A$(A,4):A$(A,1)=B$(A,1):A$(A,2)=B$(A,2):A$(A,3)=B$(A,3):A$(A,4)=B$(A,4):RETURN
  105. 2770  ' *** RECALL TEST QUESTION ***
  106. 2780  PRINT"INPUT QUESTION # ...
  107. 2790  INPUT ;V
  108. 2810  LOCATE 5,30:PRINT"QUESTION #";V:PRINT STRING$(80,177):CLS:PRINT Q$(V):PRINT Q1$(V):PRINT Q2$(V):PRINT STRING$(80,205):PRINT TAB(15)A$(V,1);TAB(40)A$(V,2):PRINT TAB(15)A$(V,3);TAB(40)A$(V,4):PRINT"NEW QUESTION # ";V:PRINT:PRINT
  109. 2950  INPUT"--> ";QQ$(V):IFQQ$(V)=""THEN2300
  110. 2970  Q$(V)=QQ$(V):INPUTQ1$(V):IFQ1$(V)=""THENQ1$(V)="XX
  111. 3000  IFQ1$(V)="XX"THENQ2$(V)="XX"ELSEINPUTQ2$(V)
  112. 3010  IFQ2$(V)=""THENQ2$(V)="XX
  113. 3020  FORB=1TO4:CLS:PRINT"ANSWER #  ";B:PRINTSTRING$(12,140):INPUTA$(V,B):IFA$(V,B)="X"THENB=1:CLS:GOTO3020
  114. 3080  NEXTB:GOTO2300
  115. 3100  LPRINTCHR$(12):LPRINTSTRING$(79,"="):LPRINTTT$;TAB(70)"PAGE ";PG:LPRINTSTRING$(79,"*"):LPRINT:LPRINT:PG=PG+1:LC=8:RETURN
  116. 3190  ' *** READ DIR FOR DISK A ***
  117. 3200  FILES"A:*.*":GOTO 2290
  118. 3220  REM **** PRINTER SUBROUTINES ***
  119. 3230  SC$=CHR$(15):EC$=CHR$(18):SEC$=CHR$(14)+CHR$(15):EEC$=CHR$(18)+CHR$(20):SE$=CHR$(14):EE$=CHR$(20):SLG$=CHR$(27)+CHR$(32):SI$=CHR$(27)+CHR$(52):EI$=CHR$(27)+CHR$(53):SU$=CHR$(27)+CHR$(45)+CHR$(1):EU$=CHR$(27)+CHR$(45)+CHR$(0)
  120. 3340  SEX$=CHR$(27)+CHR$(87)+CHR$(1):EEX$=CHR$(27)+CHR$(87)+CHR$(0):SD$=CHR$(27)+CHR$(71):ED$=CHR$(27)+CHR$(72):RETURN
  121. 3390  ' *** ERROR RECOVERY FROM NULL FILES ***
  122. 3400  LOCATE12,30:COLOR26:PRINT"NO TESTWRITER FILES ON DISK A":FORX=1TO1400:NEXTX:COLOR7:GOTO2280
  123. 65000  '*********************** SAVE ROUTINE **********************************
  124. 65100  SAVE"B:TESTWRIT.BAS"
  125.